//平台专用（结算方式）
'use strict';
define(['js/_directives/module.js','jquery'],function(directives,$){
	
	/*
	创建自定义AngularJS 指令
	//创建指令模块 (或者检索现有模块) 
	var m = angular.module("myApp");
	
	// 创建"my-dir"指令 
	myApp.directive("myDir", function() { 
	  return { 
	    restrict: "E",        // 指令是一个元素 (并非属性) 
	    scope: {              // 设置指令对于的scope 
	      name: "@",          // name 值传递 （字符串，单向绑定） 
	      amount: "=",        // amount 引用传递（双向绑定） 
	      save: "&"           // 保存操作 
	    }, 
	    template:             // 替换HTML (使用scope中的变量) 
	      "<div>" + 
	      "  {{name}}: <input ng-model='amount' />" + 
	      "  <button ng-click='save()'>Save</button>" + 
	      "</div>", 
	    replace: true,        // 使用模板替换原始标记 
	    transclude: false,    // 不复制原始HTML内容 
	    controller: [ "$scope", function ($scope, $element, $attrs, $transclude) { …  }], 
	    compile: function(tElement, tAttrs, transclude) {  
   　　　　return {  
   　　　　　　pre: function preLink(scope, iElement, iAttrs, controller) { ... },  
   　　　　　　post: function postLink(scope, iElement, iAttrs, controller) { ... }  
   　　　　}  
   　　}, 
	    link: function (scope, element, attrs, controller) {…} 
	  } 
	});
	*/
	/*
	如果不使用^前缀，指令只会在自身的元素上查找控制器。指令定义只会查找定义在指令作当前用域中的ng-model=""
	如果使用?前缀,在当前指令中没有找到所需要的控制器，会将null作为传给link函数的第四个参数。
	如果添加了^前缀，指令会在上游的指令链中查找require参数所指定的控制器。
	如果添加了?^ 将前面两个选项的行为组合起来，我们可选择地加载需要的指令并在父指令链中进行查找
	如果没有任何前缀，指令将会在自身所提供的控制器中进行查找，如果没有找到任何控制器（或具有指定名字的指令）就抛出一个错误
	*/


	//平台结算方式
	directives.directive('settleCategoryTileRoot' ,['settleInfoService',function(settleInfoService){
		 
		 return {
			  restrict: 'EA', // E = Element, A = Attribute, C = Class, M = Comment
//				  template: '<div>hello template</div>',
			  templateUrl: function(element, attrs) {
			      return attrs.templateUrl || 'js/_directives/selectWithTileRoot.html';
			  },
			  replace: false,
			  scope: {
				  targetData: '=',
				  targetLabel: '@',
				  targetValue: '@',
				  rowIndex: '=',
				  valueShow: '@',
				  vertical: '@',
				  horizon: '@'
			  },
			 controller:['$scope', function($scope){
				 //初始化函数
		         $scope.viewInit = function(){
					 //console.log('$scope.targetData.currentIndex-->',$scope.targetData.currentIndex);
		        	 if($scope.targetData.currentIndex!=null){
						for(var i=0;i<$scope.selectData.length;i++){
							if($scope.selectData[i][$scope.selectValue]==$scope.targetData.rows[$scope.targetData.currentIndex][$scope.targetValue].value){
								$scope.selectData[i].rowState = 'Y';
							}else{
								$scope.selectData[i].rowState = null;
							}
						}
		        	 }
		        	 
		         };
		         
				var response = settleInfoService.getSettleCategorys();
				response.success(function(data, status, headers, config) {
					$scope.selectData = data;
					console.log('data-->',data);
					//完成初始化赋值
					$scope.viewInit()
					
					//启动监视程序 
					$scope.$watch('targetData.currentIndex',function(newValue,oldValue,scope){
//						console.log('newValue-->',newValue);
						$scope.viewInit();
//						console.log('data当前索引改变！');
					},false);
					
				});
				response.error(function(data, status, headers, config) {
					alert( "Exception details: " + JSON.stringify({data: data}));
				});
				 
//				$scope.selectLabel = 'label';
//				$scope.selectValue = 'value';
				$scope.selectLabel = 'settleName';
				$scope.selectValue = 'settleCode';

				$scope.itemClick = function(item, $event){
//					console.log('row-->',item);
					for(var i=0;i<$scope.selectData.length;i++){
						$scope.selectData[i].rowState = null;
					}
					item.rowState = 'Y';
					 //赋值
					 /*
					 $scope.targetData.rows[$scope.targetData.currentIndex][$scope.targetValue].value = item[$scope.selectValue];
					 $scope.targetData.rows[$scope.targetData.currentIndex][$scope.targetLabel].value = item[$scope.selectLabel];
					 */
					 
					 $scope.targetData.rows[$scope.targetData.currentIndex][$scope.targetValue].value = item[$scope.selectValue];
					 $scope.targetData.rows[$scope.targetData.currentIndex][$scope.targetLabel].value = item[$scope.selectLabel];
					 /*
					 $scope.targetRow[$scope.targetValue].value = item[$scope.selectValue];
					 $scope.targetRow[$scope.targetLabel].value = item[$scope.selectLabel];
					 */
					
					 //多选时可以使用此事件
//					 $event.stopPropagation();
				 };
				 

			 }],
			 link:function (scope, element, attrs, ngModel){
		    	// Specify how UI should be updated
//	            ngModel.$render = function() {
//	            	console.log(ngModel.$viewValue || '');
//	            };
				
			 }
			 
		 };
	}])
	
    directives.factory('settleInfoService',['$rootScope', '$http', 
	    function($rootScope,$http){
			var doRequest = function(){
				var response = $http({
					method : 'POST'
					,url : $rootScope.getProjectName() + '/backstage/settleInfo/queryList'
//					,data:  data
				});	
				return response;
			};

			return {
				getSettleCategorys: function(){
					return doRequest();
				}
			
			};
		}
	])
	 


});

